#ifndef _SYS_FAN_BOOL_H_
#define _SYS_FAN_BOOL_H_

#include "FanObj.h"
#include "SysTypes.h"

#define BOOL_VTABLE(self)   ((FanBoolVTable*)self.vtable)


extern Type*    Bool_classType;
extern VTable*  Bool_classVTable;


/* [sys::Bool] Attributes */
struct FanBool
{
  FanObj        super;
};


/* [sys::Bool] Virtual-table */
typedef struct FanBoolVTable
{
  FanObjVTable  super;
} FanBoolVTable;


/* [sys::Bool] Methods and fields */
Bool            Bool_equals(Obj self, NullableObj obj);
Int             Bool_hash(Obj self);
Str*            Bool_toStr(Obj self);
Bool            Bool_defVal(void);
NullableBool    Bool_fromStr_1(Str* s);
NullableBool    Bool_fromStr(Str* s, Bool checked);
Str*            Bool_toLocale(Bool self);
Bool            Bool_not(Bool self);
Bool            Bool_and(Bool self, Bool b);
Bool            Bool_or(Bool self, Bool b);
Bool            Bool_xor(Bool self, Bool b);
Str*            Bool_toCode(Bool self);


/* [sys::Bool] Type-system functions */
Type*           Bool_initType(void);
VTable*         Bool_initVTable(void);
void            Bool_initStatic(void);


#endif
